import { inject, provide, reactive } from 'vue';

const useInjectLocal = (key, defaultValue) => {
  const localData = reactive({
    [key]: defaultValue,
  });

   /**
    * provideLocalData传递数据
    */
  const provideLocalData = () => {
    provide(key, localData);
  };

  /**
   * injectLocalData接收数据
   */
  const injectLocalData = () => {
    const data = inject(key, localData);
    if (data) {
      Object.keys(data).forEach((k) => {
        localData[k] = data[k];
      });
    }
  };

  return {
    localData,
    provideLocalData,
    injectLocalData,
  };
};

export default useInjectLocal;